<?php
function recursiveArraySearch($haystack, $needle, $index = null)
{
	$aIt     = new RecursiveArrayIterator($haystack);
	$it    = new RecursiveIteratorIterator($aIt);
   
	while($it->valid())
	{       
		if (((isset($index) AND ($it->key() == $index)) OR (!isset($index))) AND ($it->current() == $needle)) {
			return $aIt->key();
		}
	   
		$it->next();
	}
   
	return -1;
}
	
function garantiaDeActivacion($fechaActivacion, $fechaReparacion)
{
	list($diaActivacion, $mesActivacion, $añoActivacion) = split("/",$fechaActivacion);
	list($diaReparacion, $mesReparacion, $añoReparacion) = split("/",$fechaReparacion);
	
	if(strlen($diaActivacion)== 1)
	{
		$diaActivacion = "0" . $diaActivacion;	
	}
	if(strlen($mesActivacion) == 1)
	{
		$mesActivacion = "0" . $mesActivacion;	
	}
	if(strlen($diaReparacion) == 1)
	{
		$diaReparacion = "0" . $diaReparacion;	
	}
	if(strlen($mesReparacion) == 1)
	{
		$mesReparacion = "0" . $mesReparacion;	
	}
	
	$reparacionCompleto = $añoReparacion . $mesReparacion . $diaReparacion;
	$activacionCompleto = $añoActivacion . $mesActivacion . $diaActivacion;
	
	if($reparacionCompleto - $activacionCompleto <= 10000)
	{
		return true;
	}
	else
	{
		return false;	
	}
	/*
	
	$resultado = true;
	if($añoReparacion - $añoActivacion == 0)//Si lo repare el mismo año despues que se fabrico
	{
		$resultado = true;
	}
	else if($añoReparacion - $añoActivacion == 1)//Si lo repare un año despues que se fabrico
	{
		if($mesReparacion <= $mesActivacion)//Si lo repare en el mismo mes o menor en el que se fabrico
		{
			if($diaReparacion <= $diaActivacion)//Si lo repare en el mismo dia o menor en el que se fabrico
			{
				$resultado = true;	
			}
			else
			{
				$resultado = false;		
			}
		}
		else
		{
			$resultado = false;		
		}
	}
	else
	{
		$resultado = false;	
	}

	return $resultado;
	*/
}

function garantiaDeFabricacion($msnIn, $fechaReparacion)
{
	$letraAñoMsn = substr($msnIn,4,1);
	$letraMesMsn = substr($msnIn,5,1);
	
	$quincenaMsn =  ord($letraMesMsn) - 64;

	//Como no se usa ni la I, ni la O, resto
	if($quincenaMsn > 14)
	{	
		$quincenaMsn--;	
	}
	
	if($quincenaMsn > 8)
	{
		$quincenaMsn--;
	}
	
	//Segun la quincena calculo el mes
	if($quincenaMsn % 2 == 0)
	{
		$mesMsn = $quincenaMsn / 2;
	}
	else
	{
		$mesMsn = ($quincenaMsn + 1)/ 2;
	}
	if($mesMsn < 10)
	{
		$mesMsn = "0".$mesMsn;	
	}
	
	switch($quincenaMsn)
	{
		case 1:
		case 3:
		case 5:
		case 7:
		case 9:
		case 11:
		case 13:
		case 15:
		case 17:
		case 19:
		case 21:
		case 23:
		{
			$diaMsn = 15;
			break;	
		}
		case 2:
		case 6:
		case 10:
		case 14:
		case 16:
		case 20:
		case 24:
		{
			$diaMsn = 31;
			break;	
		}
		case 8:
		case 12:
		case 18:
		case 22:
		{
			$diaMsn = 30;
			break;	
		}
		case 4:
		{
			$diaMsn = 28;
			break;
		}
	}

	list($diaReparacion, $mesReparacion, $añoReparacion) = split("/",$fechaReparacion);
	
	if($letraAñoMsn == "A")
	{
		$añoMsn = 2000;	
	}
	else if($letraAñoMsn == "B")
	{
		if($añoReparacion >= 2015)
		{
			$añoMsn = 2015;
		}
		else
		{
			$añoMsn = 2001;
		}
	}
	else if($letraAñoMsn == "C")
	{
		if($añoReparacion >= 2025)
		{
			$añoMsn = 2025;
		}
		else
		{
			$añoMsn = 2002;
		}
	}
	else if($letraAñoMsn == "D")
	{
		$añoMsn = 2003;	
	}
	else if($letraAñoMsn == "E")
	{
		$añoMsn = 2004;	
	}
	else if($letraAñoMsn == "F")
	{
		if($añoReparacion >= 2026)
		{
			$añoMsn = 2026;
		}
		else if($añoReparacion >= 2016)
		{
			$añoMsn = 2016;
		}
		else
		{
			$añoMsn = 2005;
		}
	}
	else if($letraAñoMsn == "G")
	{
		if($añoReparacion >= 2017)
		{
			$añoMsn = 2017;
		}
		else
		{
			$añoMsn = 2006;
		}
	}
	else if($letraAñoMsn == "H")
	{
		if($añoReparacion >= 2027)
		{
			$añoMsn = 2027;
		}
		else
		{
			$añoMsn = 2007;
		}
	}
	else if($letraAñoMsn == "I" || $letraAñoMsn == "J")
	{
		$añoMsn = 2008;
	}
	else if($letraAñoMsn == "K")
	{
		$añoMsn = 2018;
	}
	else if($letraAñoMsn == "L")
	{
		$añoMsn = 2009;
	}
	else if($letraAñoMsn == "M")
	{
		$añoMsn = 2019;
	}
	else if($letraAñoMsn == "N")
	{
		$añoMsn = 2010;
	}
	else if($letraAñoMsn == "P")
	{
		$añoMsn = 2020;
	}
	else if($letraAñoMsn == "Q")
	{
		$añoMsn = 2011;
	}
	else if($letraAñoMsn == "R")
	{
		$añoMsn = 2021;
	}
	else if($letraAñoMsn == "S")
	{
		$añoMsn = 2012;
	}
	else if($letraAñoMsn == "T")
	{
		$añoMsn = 2022;
	}
	else if($letraAñoMsn == "V")
	{
		$añoMsn = 2013;
	}
	else if($letraAñoMsn == "W")
	{
		$añoMsn = 2023;
	}
	else if($letraAñoMsn == "X")
	{
		$añoMsn = 2014;
	}
	else if($letraAñoMsn == "Z")
	{
		$añoMsn = 2024;
	}
	
	if(strlen($diaActivacion)== 1)
	{
		$diaActivacion = "0" . $diaActivacion;	
	}
	if(strlen($mesActivacion) == 1)
	{
		$mesActivacion = "0" . $mesActivacion;	
	}
	if(strlen($diaReparacion) == 1)
	{
		$diaReparacion = "0" . $diaReparacion;	
	}
	if(strlen($mesReparacion) == 1)
	{
		$mesReparacion = "0" . $mesReparacion;	
	}
	
	$reparacionCompleto = $añoReparacion . $mesReparacion . $diaReparacion;
	$fabricacionCompleto = $añoMsn . $mesMsn . $diaMsn;
	
	if($reparacionCompleto - $fabricacionCompleto <= 10000)
	{
		return true;
	}
	else
	{
		return false;	
	}
	
	/*
	$resultado = true;
	if($añoReparacion - $añoMsn == 0)//Si lo repare el mismo año despues que se fabrico
	{
		$resultado = true;
	}
	else if($añoReparacion - $añoMsn == 1)//Si lo repare un año despues que se fabrico
	{
		if($mesReparacion <= $mesMsn)//Si lo repare en el mismo mes o menor en el que se fabrico
		{
			if($diaReparacion <= $diaMsn)//Si lo repare en el mismo dia o menor en el que se fabrico
			{
				$resultado = true;	
			}
			else
			{
				$resultado = false;		
			}
		}
		else
		{
			$resultado = false;		
		}
	}
	else
	{
		$resultado = false;	
	}

	return $resultado;
	*/
}

function tiempoTranscurrido($horaMinutoMayorIn, $horaMinutoMenorIn)
{
	$horaMayorIn = substr($horaMinutoMayorIn,0,2);
	$minutoMayorIn = substr($horaMinutoMayorIn,3,2);
	
	$horaMenorIn = substr($horaMinutoMenorIn,0,2);
	$minutoMenorIn = substr($horaMinutoMenorIn,3,2);
	
	$minutoMayorIn = $horaMayorIn * 60 + $minutoMayorIn;
	$minutoMenorIn = $horaMenorIn * 60 + $minutoMenorIn;
	
	$diferenciaMinutos = $minutoMayorIn - $minutoMenorIn;

	$diferenciaHoras = $diferenciaMinutos / 60;

	$diferenciaHoras = substr($diferenciaHoras,0,1);

	$diferenciaMinutos = $diferenciaMinutos % 60;
	
	
	if($diferenciaHoras < 10)
	{
		$diferenciaHoras = "0" . $diferenciaHoras;
	}
	if($diferenciaMinutos < 10)
	{
		$diferenciaMinutos = "0" . $diferenciaMinutos;
	}
	
	return $diferenciaHoras . ":" . $diferenciaMinutos;
}

function restarTiempoRandom($horaMinutoIn)//horaIn = HH:MM
{
	$horaIn = substr($horaMinutoIn,0,2);
	$minutoIn = substr($horaMinutoIn,3,2);
	$desplazamiento = rand(15,59);
	if($minutoIn - $desplazamiento >= 0)
	{
		$minutoDecrementado = $minutoIn - $desplazamiento;
		if($minutoDecrementado < 10)
		{
			$minutoDecrementado = "0" . $minutoDecrementado;
		}
		return $horaIn . ":" . $minutoDecrementado;
	}
	else if($horaIn - 1 >= 0)
	{
		$horaDecrementada = $horaIn - 1;
		$minutoDecrementado = $minutoIn - $desplazamiento + 60;
		if($horaDecrementada < 10)
		{
			$horaDecrementada = "0" . $horaDecrementada;
		}
		if($minutoDecrementado < 10)
		{
			$minutoDecrementado = "0" . $minutoDecrementado;
		}
		return $horaDecrementada. ":" . $minutoDecrementado;
	}
	else
	{
		$minutoDecrementado = $minutoIn - $desplazamiento + 60;
		if($minutoDecrementado < 10)
		{
			$minutoDecrementado = "0" . $minutoDecrementado;
		}
		return "00" . ":" . $minutoDecrementado;
	}
}

function sumarTiempoRandom($horaMinutoIn)//horaIn = HH:MM
{
	$horaIn = substr($horaMinutoIn,0,2);
	$minutoIn = substr($horaMinutoIn,3,2);
	$desplazamiento = rand(15,59);
	if($minutoIn + $desplazamiento < 60)
	{
		$minutoIncrementado = $minutoIn + $desplazamiento;
		if($minutoIncrementado < 10)
		{
			$minutoIncrementado = "0" . $minutoIncrementado;
		}
		return $horaIn . ":" . $minutoIncrementado;
	}
	else if($horaIn + 1 < 24)
	{
		$horaIncrementada = $horaIn + 1;
		$minutoIncrementado = $minutoIn + $desplazamiento - 60;
		if($horaIncrementada < 10)
		{
			$horaIncrementada = "0" . $horaIncrementada;
		}
		if($minutoIncrementado < 10)
		{
			$minutoIncrementado = "0" . $minutoIncrementado;
		}
		return $horaIncrementada. ":" . $minutoIncrementado;
	}
	else
	{
		$minutoIncrementado = $minutoIn + $desplazamiento - 60;
		if($minutoIncrementado < 10)
		{
			$minutoIncrementado = "0" . $minutoIncrementado;
		}
		return "00" . ":" . $minutoIncrementado;
	}
}
?>